﻿#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>

typedef int HPDatatype;
typedef struct Heap
{
	HPDatatype* a;
	int size;
	int capacity;
}Heap;
void HeapInit(Heap* hp);//初始化
void HeapDestroy(Heap* hp);//销毁
void Swap(HPDatatype* p1, HPDatatype* p2);//父子交换
void AdjustUP(HPDatatype* a, int child);//向上调整
void HeapPush(Heap* hp, HPDatatype x);//插入；
void AdjustDown(HPDatatype* a, int n, int parent);//向下调整
void HeapPop(Heap* hp);//删除堆顶元素；
bool HeapEmpty(Heap* hp);//判断空
HPDatatype HeapTop(Heap* hp);//取出堆顶元素；
int HeapSize(Heap* hp);//个数